def test(n):
    """
    递归函数，用于演示递归过程中的输出

    参数:
    n -- 递归的深度，每次递归调用时n的值减1

    返回值:
    无直接返回值，但通过打印输出展示递归的调用层级
    """
    # 递归终止条件，当n大于2时继续递归，否则结束
    # if n > 2:
    #     test(n - 1)
    # # 在每次递归调用的末尾打印当前n的值，用于展示递归深度
    # print("n=", n)


# 调用test函数，传入4作为初始递归深度
test(4)


# 结果
# n= 2
# n= 3
# n= 4

def factorial(n):
    """
    计算n的阶乘

    参数:
    n -- 需要计算阶乘的整数

    返回值:
    n的阶乘结果
    """
    if n == 1:
        return 1
    else:
        return factorial(n - 1) * n


print(factorial(5))

# 1、执行一个函数时，就创建一个新的空间(栈空间)
# 2、函数的变量是独立的，比如n变量
# 3、递归必须向退出递归的条件逼近,否则就是无限递归,就会出现 递归错误
# 4、当一个函数执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁
